// axios的基本使用
import axios from 'axios';

// axios.get('http://123.207.32.32:8000/home/multidata').then((res) => {
//   console.log(res);
// });

// axios
//   .get('http://httpbin.org/get', {
//     params: {
//       name: 'red',
//       age: 18,
//     },
//   })
//   .then((res) => {
//     console.log(res);
//   });

// axios
//   .post('http://httpbin.org/post', {
//     data: {
//       name: 'red',
//       age: 18,
//     },
//   })
//   .then((res) => {
//     console.log(res);
//   });

// 4.axios的配置选项
// 4.1. 全局的配置
axios.defaults.baseURL = 'http://httpbin.org';
axios.defaults.timeout = 10000;
// axios.defaults.headers = {};

// 4.2每个请求都有自己单独的配置
// axios
//   .get('http://httpbin.org/get', {
//     params: {
//       name: 'red',
//       age: 18,
//     },
//     baseURL: 'http://httpbin.org',
//     timeout: 5000,
//   })
//   .then((res) => {
//     console.log(res);
//   });

// 5.axios.all -> 多个请求一起返回
// axios
//   .all([
//     axios.get('/get', { params: { name: 'red', age: 18 } }),
//     axios.post('/post', { data: { name: 'red', age: 18 } }),
//   ])
//   .then((res) => {
//     console.log(res[0].data);
//     console.log(res[1].data);
//   });

// 6.axios的拦截器
// 传入两个参数
// fn1: 请求发送成功执行的函数
// fn2: 请求发送失败执行的函数
axios.interceptors.request.use(
  (config) => {
    // 想做的一些操作, 例如
    // 1.给请求添加token
    // 2.isLoading动画
    console.log('请求拦截成功');
    return config;
  },
  (err) => {
    console.log('请求发生错误');
    return err;
  }
);

axios.interceptors.response.use(
  (res) => {
    // 想做的一些操作, 例如
    // return res.data
    console.log('响应拦截成功');
    return res;
  },
  (res) => {
    console.log('响应发生错误');
    return res;
  }
);
